#include<iostream>
#include<signal.h>
#include"../comm/httplib.h"
#include"oj_control.hpp"
using namespace httplib;
using namespace ns_control;
 static Control *ctrl_ptr=nullptr;
 void Recovery(int signo)
 {
     ctrl_ptr->RecoveryMachine();
 }
int main()
{
    
    signal(SIGQUIT,Recovery);
    Server svr;
    Control ctrl;
    ctrl_ptr=&ctrl;
    svr.Get("/all_question",[&ctrl](const Request &req,Response &resp){
          std::string html;
          if (false  == ctrl.AllQuestions(&html)){
               html = "";
          }
          resp.set_content(html,"text/html;charset=utf-8");
    });
    svr.Get(R"(/question/(\d+))",[&ctrl](const Request &req,Response &resp){
         std::string num=req.matches[1];
         std::string html;
         ctrl.Question(num,&html);
         resp.set_content(html,"text/html;charset=utf-8");
    });
    svr.Post(R"(/judge/(\d+))",[&ctrl](const Request &req,Response &resp){
         std::string num=req.matches[1];
         std::string result_json;
     ctrl.Judge(num,req.body,&result_json);
         resp.set_content(result_json,"application/json;charset=utf-8");
    });
    svr.set_base_dir("./wwwroot");
    svr.listen("0.0.0.0",8088);
    return 0;
}
